草庐IT

Android AsyncTask 内存泄漏

全部标签

Java JAR 内存使用 VS 类文件内存使用

我最近将我的大型Java应用程序更改为以JAR而非单个类文件的形式交付。我有405个JARS,其中包含5000个类文件。我的问题是,当我将程序作为JAR运行时(类路径是获取所有JAR的通配符),Java将不断使用越来越多的内存。我已经看到内存超过2GB,而且Java似乎没有执行停止世界的垃圾收集来降低内存。如果我针对展开的JAR(仅类文件)运行完全相同的程序,Java的内存使用率会低得多(类路径中的JAR文件类路径中的类文件编辑:我接受了@KErlandsson的回答,因为我认为这是最好的解释,而这只是Java的一个丑陋的怪癖。感谢大家(尤其是@KErlandsson)的帮助。

java - Java的JConsole可以用来自动配置内存吗?

我正在学习JavaJMX和JConsole.我很好奇JConsole的内存管理能力。例如,内存选项卡中有一个“执行GC”按钮:假设我有一个简单的Java应用程序会占用内存,如下所示:publicclassMemoryEater{publicstaticvoidmain(String[]args){Vectorv=newVector();while(true){byteb[]=newbyte[1048576];v.add(b);Runtimert=Runtime.getRuntime();System.out.println("freememory:"+rt.freeMemory());

java - 如何在 Java 中获得空闲堆大小(不包括堆栈/方法内存)?

我想计算我的应用程序的堆使用情况。我想仅获得堆大小的百分比值。如何获取当前正在运行的应用程序的代码值?编辑有一个点赞的答案不完整/不正确。这些方法返回的值也包括堆栈和方法区,我只需要监控堆大小。使用该代码,当我达到43%时出现HeapError异常,因此我不能使用这些方法来仅监视堆Runtime.getRuntime().totalMemory() 最佳答案 dbyme的回答是不准确的——这些运行时调用给你一个JVM使用的内存量,但是这个内存不仅仅由堆组成,还有堆栈和方法区,例如 关于j

java - 将 EhCache 磁盘存储内容加载到内存中

如EhCachedocumentation中所述:Inpracticethismeansthatpersistentin-memorycachewillstartupwithallofitselementsondisk.[...]So,theEhcachedesigndoesnotloadthemallintomemoryonstartup,butlazilyloadsthemasrequired.我希望内存缓存启动时会将其所有元素存储在内存中,我该如何实现?这是因为我们的网站对缓存执行了很多访问,所以我们第一次访问该网站时响应时间很差。 最佳答案

浅析开源内存数据库Fastdb

介绍:Fastdb是免费开源内存数据库,其优秀的性能,和简洁的C++代码,让我学习使用过程中收益颇多,但是国内中文相关研究的文章相当稀少,外文我查询相当不便。有兴趣的朋友可以通过以下网站访问:MainMemoryObject-RelationalDatabaseManagementSystem,相关文档详见:FastDBMainMemoryDatabaseManagementSystem。本文将以Windows版本C++版本号3.76为基础进行开发和测试,听说有4.14的版本但是我没有办法获取,有获得新版本的朋友不妨能发我一份学习,我的邮箱:lyfwwb@163.com,在此先行感谢!本文将记

java - 内存不足错误 : Java heap space when casting a numeric primitive to char

我一直在研究Decorator模式并开发了简单的类ToUpperCaseInputStream。我覆盖了read()方法,因此它可以将所有字符从InputStream转换为大写。该方法的代码如下所示(抛出OutOfMemoryError):@Overridepublicintread()throwsIOException{returnCharacter.toUpperCase((char)super.read());}我后来发现,转换为char是多余的,但这不是重点。当代码出现“java.lang.OutOfMemoryError:Java堆空间”时:((char)super.read

Java内存中SQL表类数据结构

有好几次我想要一个类似于SQL表的数据结构您可以在其中选择各种字段和多个字段。类似于内存中的SQL实现,只是我不想在数据结构中存储那么多对象。我还要求该对象可以通过标准Java方式进行序列化。我之前使用多个哈希表或自定义哈希键完成过此操作,但最终代码很多,而且问题非常具体。我还使用Groovy及其闭包功能和gpath来提供帮助,但我并不总是可以使用它(不同的项目)。编辑:我认为我的问题更多是对象遍历/选择问题这里有一些有趣的项目:http://josql.sourceforge.net/http://homepages.mcs.vuw.ac.nz/~djp/JQL/http://tod

java - 在 Java 的静态单例中访问的变量的内存可见性是什么?

我在项目中看到过很多这种类型的代码,应用程序需要一个全局数据持有者,所以他们使用任何线程都可以访问的静态单例。publicclassGlobalData{//Data-relatedcode.Thiscouldbeanything;I'veusedasimpleString.//privateStringsomeData;publicStringgetData(){returnsomeData;}publicvoidsetData(Stringdata){someData=data;}//Singletoncode//privatestaticGlobalDataINSTANCE;pr

java - 在java中,为什么在数据类型之前不使用new运算符来分配内存?

如果我们需要new操作符来为一个对象分配内存,那我们为什么不使用它在数据类型之前分配内存?class-nameclass-var=newclass-name();newinta; 最佳答案 因为JamesGosling这么说....(或BjarneStroustrup这么说)。真的,这主要是语言设计的问题,而不是技术规律。javac向您隐藏这些语义并执行所谓的装箱/拆箱(并自动执行)。这些类型可以作为值或“对象”(通常用堆实现)存在。当上下文需要对象引用时,javac会发出框指令以将int值移动到对象包装器(int->Integer

java - 推荐用于 Java 实现的低内存 HashMap

我目前正在处理一个与编程相关的问题,我试图在其中制作大量数据的散列图。数据的键是CharSequence的自定义低内存实现,它实现了hashCode()和equals(...),值是Integer对象。这个哈希表中可能有数百万个条目,我设法通过让Integer成为文件中指向我希望散列的数据的指针来大幅减少该值的内存使用,但问题是key可能是十个字节数(平均25字节),并且在HashMap的默认实现中,键需要保存在内存中。我需要一个内存开销低的HashMap,它可以将键分页到磁盘或存储键的哈希表示。如果key本身经过哈希处理,那么我会担心哈希冲突。理想情况下,我希望每50MB的堆空间能够